from scipy import fftpack
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

kfx = plt.imread('./kfx.png')

"""
1.使用傅里叶变换，把图片变成频率
2.把高频点（噪点）赋值为0
3.进行傅里叶逆变换
4.去虚保实
"""
kfx_fft = fftpack.fft2(kfx)
# 绝对值大于某一频率（阈值）的点我们认为是高频点即噪点
kfx_fft[np.abs(kfx_fft) > 8e2] = 0
# result = np.where(np.abs(kfx_fft) > 2, 0, kfx_fft)
# 逆变换
kfx_ifft = fftpack.ifft2((kfx_fft))
# 去虚部保实部
kfx_cleaned = np.real(kfx_ifft)
plt.figure(figsize=(10, 8))
plt.imshow(kfx, cmap='gray')
plt.figure(figsize=(10, 8))
plt.imshow(kfx_cleaned, cmap='gray')
plt.show()
